The present invention relates to conversion of colors between two color spaces.
In order to use colors in computers and related output devices, such as displays and printers, the colors have to be represented numerically. A color is specified or represented in the form of one or more color components, which can be thought of as dimensions in a color space. Each color component has a numerical value and together the color component values provide the information necessary to generate a desired color on an output device. A color space defines the interpretation of the color component values used to represent a color. Examples of color spaces are RGB (Red, Green and Blue) and CMYK (Cyan, Magenta, Yellow and Black). For most color spaces, a color is represented by one to four numbers, one for each dimension or component of the color space.
Different output devices use different color spaces to represent colors, which creates a need for converting colors between different color spaces. A frequently used method for converting color component values from a source color space to a destination color space is to use a multi-dimensional color table. The color table contains a set of reference colors in the source color space, and corresponding mappings to reference colors in the destination color space. For example, when the source color space is L*a*b* (luminance, red/blue chrominance and yellow/blue chrominance) and the destination color space is CMYK (Cyan, Magenta, Yellow and Black), a CMYK output color corresponding to an L*a*b* input color can be obtained by looking up the L*a*b* color value in an L*a*b* to CMYK table. In most cases, the reference colors in a color table do not include all possible input colors. The output colors for input colors that are not reference colors are obtained by interpolating among the existing reference colors in the L*, a*, and b* dimensions, respectively.
Several interpolation methods are available. Linear interpolation is a commonly used interpolation method but is slow, so other, faster methods have been developed for special cases. For three-dimensional tables, there are prism, pyramid and tetrahedral interpolation methods. One example of a tetrahedral interpolation method is described in “Color Technology for Electronic Imaging Devices” by Henry Kang, page 68 ff, published Jan. 1, 1997, by SPIE—the International Society for Optical Engineering. For tables with four or more dimensions there are higher order interpolation methods. One such method is described in U.S. Pat. No. 4,511,989 to Sakamoto.
When the number of dimensions grows bigger than four, linear interpolation is a commonly used, but inefficient interpolation method, as will be shown by the following example. Assume that a user wishes to convert an input color having N color components to an output color having M color components. For linear interpolation in an N-dimensional table storing M-tuples, the required number of interpolation calculations is (2N−1)·M. An interpolation calculation here refers to an interpolation calculation in a single dimension and a single output value calculation, such as c2=c0+x(c1−c0). For example, when interpolating from Hexachrome (N=6) to XYZ (M=3), 189 (or 63·M) calculations are needed. The factor 63 seriously affects the overall performance. Even more input dimensions are needed when modeling the interaction of, for example, eight inks on a printing press. If the input data is spectral data (N=32), then approximately 4.3·M·109 calculations are needed. Thus, there is a need for a more efficient interpolation method for higher dimensions than the currently used linear interpolation method.